// *** ADDED BY HEADER FIXUP ***
#include <cctype>
#include <cstdlib>
#include <sstream>
#include <string>
#include "Utilidades.h"
// *** END ***
/*
 * Idade.cpp
 *
 *  Created on: 06/08/2012
 *      Author: Guilherme Branco
 *              filipe
 */
#include "Idade.h"
Idade::Idade(string idade)
{
    setValor(idade);
}

Idade::Idade(Data data)
{
    setValor(data);
}

void Idade::setValor(Data data)
{
    string s = validar(data);
    validar(s);
    this->valor = s;
}

void Idade::setValor(string idade)
{
    this->valor = idade;
}

void Idade::validar(string idade) throw(invalid_argument)
{
    unsigned int n;
    n = atof(idade.c_str());
    for(unsigned int i=0;i<idade.size();i++)
    {
        if(!isdigit(idade.at(i)))
        {
            throw invalid_argument("ERRO! Idade invalida.");
        }
    }
    if(n<0||n>120)
    {
        throw invalid_argument("ERRO! Idade invalida.");
    }
}

string Idade::validar(Data data) throw(invalid_argument)
{
    string dat(data.getValor());
    string sub1;
    size_t tag2 = dat.find_last_of("/");
    sub1 = dat.substr(tag2+1,dat.size());
    int ano = atof(sub1.c_str());
    ano = 2012 - ano;
    string s;
    s = convertString(ano);
    return (s);
}
